Sachin H R

개요

이 분 문제는 조금 많이 엉성하다.
https://github.com/SachinHR/scenario-examples/tree/main
여기에서 답을 확인해가면 하는 것이 낫다.

Log Reader - 2

alpine-reader-pod가 돌아가고 있다.
모든 로그를 podlogs.txt에 저장하라.

Log Reader

log-reader-pod 파드가 있다.
모든 파드 로그를 podalllogs.txt에 저장하자.

ETCD Restore

etcd-controlplanekube-system에 돌아가고 있다.
현재 디비를 /opt/cluster_backup.db로 백업하여 저장하라.
--data-dir/root/default.etcd를 사용하라.
복구한 출력물을 restore.txt에 저장하라.

ETCD Backup

etcd-controlplanekube-system에 돌아가고 있다.
현재 디비를 /opt/cluster_backup.db로 백업하여 저장하라.
백업할 때의 출력물을 restore.txt에 저장하라.

Secret 1

database-ns에 있는 database-data 시크릿에 있는 값을 디코딩하고, decoded.txt에 넣어라.

Secret

database-data.txt 파일의 내용으로 database-app-secret 시크릿을 만들어라

Cluster Upgrade

컨트롤 플레인의 kubeadm, kubelet, 클러스터를 전부 한 단계 업그레이드하자.
딱 한 단계만 올려야 한다!

Service Filter

svc-filter.sh가 있다.
jsonpath만 사용해서 redis-service의 타겟 포트를 노출하는 명령어를 안 속에 작성하라.
kubectl의 명령어만 사용해야 한다.

Service account, cluster role, cluster role binding 1

app-account, app-role-cka, app-role-binding-cka를 만들어라.
(이름은 왜 클러스터 롤이지)
해당 계정은 오직 기본 네임스페이스의 파드에만 겟할 수 있어야 한다.

Service account, cluster role, cluster role binding

ServiceAccount group1-sa, ClusterRole group1-role-cka, ClusterRoleBinding group1-role-binding-cka가 있다.
이때 이 계정이 Deployment에만 create, get, list를 할 수 있도록 만들자.

Pod Resource

모든 네임스페이스에서 가장 cpu를 많이 소모하는 파드를 찾아라.
그것을 high_cpu_pod.txtpop_name,namespace 형식으로 적어라.

Pod Logs - 1

product 파드의 로그를 찍으면 Mi Tv Is Good라 출력될 것이다.
양식 파일에서 변수 부분을 수정해서 Sony Tv Is Good가 나오도록 하라.

Pod Log

다음의 요구사항을 만족하는 파드를 만들어라

Pod filter

nginx-podapplication를 출력하는 스크립트를 짜라
jsonpath만 사용하라.

Create Pod

nginx 이미지를 쓰고 sleep 시키는 sleep-pod라는 파드를 만들자.

Node Resource

가장 메모리를 많이 소비하는 노드를 찾자.
current_context,node_name 형식으로 high_memory_node.txt에 저장하자.

Log Reader - 1

application-pod에 있는 에러 로그만 poderrorlogs.txt에 저장하자

Services

nginx-pod가 있다.
nginx-service로 클러스터 내부에 노출시키자.
포트포워딩하여 curl로 접근이 가능하도록 만들자.

ClusterIP

nginx-deployment의 80번 포트를 8080에서 노출하는 nginx-service를 만들자.
매칭된 ip들을 pod_ips.txt로 저장하자.

CoreDNS

dns-ns 네임스페이스에 dns-rs-cka라는 레플리카셋을 만들자.
registry.k8s.io/e2e-test-images/jessie-dnsutils:1.3를 이미지로 삼고, dns-container라는 이름의 컨테이너에 3600초 슬립시키고 2개의 복제본을 만들어라.
만들어지면 해당 파드를 통해 nslookup kubernetes.default 를 하고 결과물을 dns-output.txt에 저장하자.

CoreDNS - 1

다음의 조건 만족하는 Deployment를 만들어라.

파드가 돌아가면 nslookup kubernetes.default를 하고 결과를 dns-output.txt에 저장하자.

Ingress

nginx-service로 노출된 nginx-deployment가 있다.
nginx-ingress-resource를 만들어라.

Network Policy

my-app-deploymentmy-app-service로 노출되고 있고, cache-deployment도 있는 상태.
다음의 조건을 만족하는 네트워크 폴리시를 만들어라.

NodePort

app-service-cka라는 노드포트를 만들어라.
nginx-app-space 네임스페이스에 있는 nginx-app-cka 디플로이먼트를 노출시켜야 한다.
tcp에 포트, 타겟 포트는 80이다.
노드포트는 31000이다.

NodePort - 1

다음의 조건을 만족하는 디플로이먼트를 만들어라.

이후에는 my-web-app-service라는 이름으로 노드 포트 30770을 노출하는 서비스를 만들어라.

Nslookup

nginx-pod-cka 파드를 만들고, 이것을 nginx-service-cka라는 이름으로 노출해라.
busybox:1.28 이미지를 써서 nslookup을 해보고, 결과를 nginx-service.txt에 저장하자

Storage Class

green-stc라는 StorageClass를 만들어라.

Shared Volume

my-pod-cka라는 파드와 my-pvc-cka라는 pvc가 이용 가능한 상태이고, 다음의 요구를 맞춰라.

Persistent Volume Claim Resize

yellow-pvc-cka라는 PersistentVolumeyellow-pv-cka에서 60Mi만큼 요청하도록 바꿔라.
성공적으로 됐다는 것을 보장해야 함

Storage Class, Persistent Volume, Persisten Volume Claim, Pod

다음의 요구사항을 충족해 만들기

Persistent Volume, Persisten Volume Claim, Storage Class

다음의 요구사항을 충족해 만들기

Persistent Volume Claim, Pod

nginx-pod-cka.yaml 파일이 있다.
다음의 요구사항에 맞춰 수정하자.

마지막 파드는 뭘 말하는 건지를 모르겠다.

Persistent Volume Claim

red-pv-cka라는 pv가 있다.
다음의 조건을 만족하는 pvc를 만들어라.

Persisten Volume, Persistent Volume Claim, Pod

pvc, pv, pod를 만들어라.

Persistent Volume, Persistent Volume Claim

pvc, pv를 만들어라.

Persistent Volume

pv를 만들어라.

Deployment Issue 1

nginx-deployment 디플이 동작하지 않는 것을 해결하라.

Pod Issue

hello-kubernetes 파드가 돌아가도록 수정하라.

Pod Issue - 1

nginx-pod가 안 돌아가니 고쳐주세오 찡찡

Pod Issue - 2

redis-pod가 안 돌아가니 고쳐주세오 찡찡

Pod Issue - 3

frontend 파드가 펜딩 상태니 고쳐주세오 찡찡
파드의 어떠한 설정도 지우면 안 됨!

Pod Issue - 4

postgres-pod.yaml가 있는데, 이게 동작하도록 해주자.
파드의 어떠한 설정도 지우면 안 됨!

Pod Issue - 5

redis-pod.yaml가 있는데, 이게 동작하도록 해주자.
파드의 어떠한 설정도 지우면 안 됨!

Pod Issue - 6

my-pod-cka가 안 돌아가니 고쳐주세오 찡찡
파드 설정 건드리지 마라!

Pod Issue - 7

node01에 테인트가 걸려있다.
application-deployment.yaml파일에 톨러레이션을 업데이트하고 돌아가게 만들어라.
파드 설정 건드리지 마라!

Kubectl - Config Issue

컨트롤플레인에서 kubectl이 안 먹는다.
설정 파일은 .kube/config에 있다.

Deployment Issue

Exam

이제부턴 양식 건드리진 말은 빼겠다.
어차피 다 있어서..

postgres-deployment.yaml의 문제를 찾아 동작하게 만들자.

Pod Issue - 8

nginx-podnginx-service로 노출되고 있다.
kubectl port-forward svc/nginx-service 8080:80가 안 되는 이슈를 고쳐라.
curl http://localhost:8080이 가능하도록 하라.

Kubelet Issue

controlplane노드의 kubelet에 문제가 있다.
위치는 /var/lib/kubelet/config.yaml, /etc/kubernetes/kubelet.conf에 있다.

Deployment Not UP-TO-DATE

stream-deployment가 up to date되지 않는데, 1이 되도록 고치자.

Deployment Issue 4

database-deployment 돌아가게 해주세요 찡찡

Controller Manager Issue

video-app가 0개인데, 2개로 늘려주자.

Network Policy Issue

red-podgreen-podblue-pod 파드가 있다.
red-pod는 red-service 서비스로 노출돼있다.
이 파드에 네트워크 정책을 적용했으나, 다른 두 파드로부터 접근이 가능한 상황이다.
green-pod만 접근 가능하도록 수정해라.

Node Not Ready

컨트롤 플레인의 kubelet이 동작하도록 고쳐라.

Kubelctl - Port Issue

kubectl을 쓸 때 다음과 같은 에러를 마주한다.
The connection to the server 172.30.1.2:6443 was refused - did you specify the right host or port?
몇 초 기다리면 다시 되지만, 곧 다시 에러가 뜰 것이다.
컨트롤러 매니저가 계속 재시작될텐데, 이걸 고쳐라.
이 문제는 쿠버네티스 동작 방식을 알고 있어야 풀기 수월하다.

Deployment Issue 3

postgres-deployment 동작하게 해주세요 찡찡

Deployment Issue 2

frontend-deployment.yaml가 돌아가게 만들자.

Persistent Volume, Persistent Volume Claim - Issue

my-pvc가 바운딩되도록 만들어라.

CronJob Issue

cka-pod가 cka-service를 통해 내부에 노출돼있따.
cka-pod를 서비스를 통해 모니터링하는 cka-cronjob크론잡이 매분 실행되게 하라.

Service account, role, role binding Issue

dev-sa 서비스 계정, dev-role-cka 롤, dev-role-binding-cka 롤바인딩이 있다.
dev-sa가  pods와 services에 대해 createlistget를 할 수 있게 만들어라.

Service account, role, role binding Issue - 1

prod-sa 서비스 계정,prod-role-ckaprod-role-binding-cka롤 바인딩이 있다.
해당 계정이 services에 대해 createlist, get할 수 있게 만들어주자

DaemonSet Issue

cache-daemonset 데몬셋이 있는데, 컨트롤플레인에 파드를 배치하지 않는다.
모든 노드에 배치되도록 하라.

ETCD Backup Issue

컨트롤 플레인이 왜 not ready인지 확인하라.
etcd-controlplane를 확인하고,/opt/cluster_backup.db에 백업하여 저장하라. 
콘솔 출력물은 backup.txt에 저장하라.

Rollback

redis-deployment를 이전 버전으로 돌려라.
돌린 이후 사용되고 있는 이미지를 rolling-back-image.txt에 저장하라.
레플리카를 3으로 늘려라.

Deployment

느징스를 사용하는 nginx-app-deployment를 만들고, 3개로 스케일링해라.

Deployment Scale

redis-deploy 디플이 redis-ns 네임스페이스에 있다.
3개로 스케일링해라.

Deployment, Secret

webapp-deployment에서 민감한 파일을 그대로 양식에 담고 운영 중이다.
다음을 만족하는 시크릿을 만들어서 바꿔주자.

이 키들을 환경변수로 넣어라.

Deployment, Rollout

다음의 조건을 만족하는 디플을 만들어라.

Pod, Service - 1

ubuntu-pod 파드를 ubuntu 이미지로 만들고 app=os 라벨을 붙여라.
8080 클러스터 포트를 여는 ubuntu-service 서비스를 만들어서 파드를 노출시켜라.

ConfigMap, Deployment

webapp-deployment라는 디플이 사용하는 환경변수는 자주 바뀐다.
APPLICATION=web-app를 가진 webapp-deployment-config-map라는 이름의 컨피그맵으로 관리해라.

Pod, Service

You need to create a Kubernetes Pod and a Service to host a simple web application that prints "It works!" when accessed. Follow these steps:
파드와 서비스를 만들자.

Deployment Issue

my-app-deployment.yaml의 문제를 고쳐라.

Deployment History

video-app 디플은 여러번의 업데이트를 거쳤다.
3번째 리비전 당시의 이미지 이름을 app-file.txt에 REVISION_TOTAL_COUNT,IMAGE_NAME 형식으로 저장하라.

Pod

my-pod가 있다.
최대 제한을 50Mi로 바꿔주자.